package com.tedu.api.thread;

/**
 * 线程：单线程，多线程
 * 单线程：按照顺序执行线程，主方法就是主线程  main
 * 多线程:创建多条线程，做不同的事情
 * 多线程并发:创建多条线程，"同时”做相同的事情
 *
 * 案例:创建Chef类 实现Runnable
 *            私有属性  dishName
 *            run()功能{提示语句：开始准备+dishName
 *            模拟准备时间：阻塞：1~3秒
 *            }
 *            Math.random()随机生成0.0倒1.0浮点数值（不包含1.0）
 *                        提示语句：dishName+准备完成
 *                        }
 *         主方法 实现 创建两个线程 两个   chef1  [不需要Lambda】
 *                                     chef2
 *
 */
public class Kitchen {
    public static void main(String[] args) {
        //第一位厨师--西红柿炒鸡蛋
       Thread chef1=new Thread();
       //第二位厨师---红烧肉
        Thread chef2=new Thread();

        chef1.start();
        chef2.start();
    }
}
//创建厨子类

class Chef implements Runnable{
private String dishName;//私有属性：菜肴名--构造器:区分厨师制作菜看
//两处字”同时”完成菜肴制作
public Chef(String dn){
    this.dishName=dn;  //来厨师 this.dishName="红烧肉'
                       ///this当前对象--Chef

}

    public void run() {
        System.out.println("开始准备"+dishName);
        //模拟厨师准本时间：1~3秒
        //1.Math.random（）获取0.0~1.0范围值【不包括1.0】
        //2.Math.random()*3000，得到范围值：0.0~3000.0【不包括3000.0】
        //范围值：0.0~2999.0  0~2  随机范围：0~2
        //3.成3000范围：0.0~2999.0 强转long类型（long）（Math.random（））
        //  范围值：0~2999 秒数：0~2
        //4.加1000（long）（Math.random()*3000)+1000
        //范围值：1~3秒
        try {
            Thread.sleep((long)(Math.random()*3000)+1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
